#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
//int main(){
 // char* str="hello bit";
  //*str='H';
  //return 0;
//}
int g_val=100;
int main(){
  pid_t id=fork();
  if(id==0){

      int cnt=5;
    while(1){
      printf("i am child,pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
      sleep(1);
      if(cnt)cnt--;
      else{
        g_val=200;
        printf("子进程change g_val:100->200\n");
        cnt--;
      }
    }
  }
  else{
    //父进程
    while(1){
      printf("i am parent,pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
      sleep(1);

  }
  }
  return 0;
}
//int g_val_1;
//int g_val_2=100;
//int main(int argc,char* argv[],char*env[]){
//  printf("code addr:%p\n",main);
//  const char*str="hello bit";
//  printf("read only string addr:%p\n",str);
//  printf("init global value addr:%p\n",&g_val_2);
//  printf("uninit global value addr:%p\n",&g_val_1);
//  char*mem=(char*)malloc(100);
//  char*mem1=(char*)malloc(100);
//  char*mem2=(char*)malloc(100);
//  printf("heap addr:%p\n",mem);
//  printf("heap addr:%p\n",mem1);
//  printf("heap addr:%p\n",mem2);
//  printf("stack addr:%p\n",&str);
//  printf("stack addr:%p\n",&mem);
//  static int a=0;
//  int b;
//  int c;
//  printf("a=stack addr:%p\n",&a);
//  printf("stack addr:%p\n",&b);
//  printf("stack addr:%p\n",&c);
//  //int i=0;
//  //for(;argv[i];i++){
//  //  printf("%d->%s\n",i,argv[i]);
//  //}
//  //int i=0;
//  //for(;env[i];i++){
//  //    printf("%d->%s\n",i,env[i]);
//  //    }
//  //extern char **environ;
//  //int i=0;
//  //for(;environ[i];i++){
//  //  printf("%d->%s\n",i,environ[i]);
//  //}
//  //printf("%p\n",environ);
//  //printf("%p\n",env);
//  //if(argc!=2){
//  //  printf("请输入正确格式\n");
//  //  return 0;
//  //}
//  //else{
//  //  sleep(15);
//  //  chdir(argv[1]);
//  //  sleep(15);
//  //}
//  //}
//  //}
//  
////  pid_t id=fork();
////  if(id==0){
////    char arr[]="WZY=yzx";
////    
////    putenv(arr);
////    //sleep(10);
////    int i=0;
////    for(;env[i];i++){
////      printf("%d->%s\n",i,env[i]);
////    }
////    printf("\n");
////  }
////  else{
////  printf("%p\n",env);
////  int i=0;
////  for(;env[i];i++){
////    printf("%d->%s\n",i,env[i]);
////  }
////}
//  return 0;
//}
